⬅️ JavaScript 🔗 StackOverflow
The difference is that functionOne is a function expression and so only defined when that line is reached, whereas functionTwo is a function declaration and is defined as soon as its surrounding function or script is executed (due to hoisting).
Expression
// TypeError: functionOne is not a function
functionOne();
var functionOne = function() {
console.log("Hello!");
};Declaration
// Outputs: "Hello!"
functionTwo();
function functionTwo() {
console.log("Hello!");
}Aliasing Functions
Functions can be aliased by assigning one function to multiple variables (e.g., var xyz = abc). This makes xyz and abc references to the same function object.
Naming Functions
A function’s name attribute depends on how it’s defined. Named functions like function abc(){} have their name property set automatically, while anonymous functions assigned to variables have an empty name (e.g., var abc = function(){}).